---
title: Configuration settings
summary: Configuration keys consumed by this library, retrieval methods, and runtime dependencies.
status: draft
owner: SAIF Claims BOF team
last_reviewed: 2026-08-21
library: SAIF.Business.View.Policy
reference_type: embedded
---

# Configuration settings

This library's configuration surface is narrow: a single class (`clsPolicySecurity`) reads three
plain-text Environment API settings, all consumed together in its private `Initialize()` method to
build a secondary SQL Server "BDS" data connection used exclusively for authorization/access-control
stored-procedure lookups. No `AppSettings`, secure/encrypted settings, or `ApplicationSettingsBase`
production settings were found.

## Configuration retrieval methods

| Method | Class / Interface | Namespace | Usage pattern |
| --- | --- | --- | --- |
| `AppGlobal.EnvironmentService.GetConfigSetting(String)` | `AppGlobal` (static accessor) → `IEnvironmentService` | `SAIF.Framework.Security` (`AppGlobal`); `IEnvironmentService` from `SAIF.BOF.Framework.Security.EnvironmentApi`* | Called three times, back-to-back, inside `clsPolicySecurity.Initialize()` (a `Private Sub`) to read the SQL Server BDS connection parameters immediately before constructing `clsSQLDataLayer`. This is the only configuration-retrieval mechanism found in this library's production code. |

## Environment API settings

| Setting key | Method | Data type | Purpose | Consuming class | Source |
| --- | --- | --- | --- | --- | --- |
| `BDS_USER` | `GetConfigSetting` | String | SQL Server login/username used to authenticate the secondary BDS connection — credential-like, varies by environment. | `clsPolicySecurity` | `SAIF.Business.View.Policy\clsPolicySecurity.vb` |
| `bdsDatabase` | `GetConfigSetting` | String | SQL Server host/instance ("server") name for the BDS connection — varies by environment. | `clsPolicySecurity` | `SAIF.Business.View.Policy\clsPolicySecurity.vb` |
| `BDS_DATABASENAME` | `GetConfigSetting` | String | SQL Server database/catalog name (`Initial Catalog`) for the BDS connection — varies by environment. | `clsPolicySecurity` | `SAIF.Business.View.Policy\clsPolicySecurity.vb` |

All three keys are read together in `clsPolicySecurity.Initialize()` (invoked once, from the class
constructor, for every `clsPolicySecurity` instance) and passed positionally into
`New clsSQLDataLayer(bdsUser, bdsServer, bdsDatabaseName, SecurityPrincipal.UserName.ToString)`. None
use the generic `GetConfigSetting<T>(...)` overload or `GetSecureConfigSetting` — all three retrieve
plain-text values via the non-generic, non-secure overload, including `BDS_USER`, which functions as
a database-login credential but is not retrieved through the secure/encrypted path.*

## AppSettings (Web.config)

Not applicable. No `ConfigurationManager.AppSettings` usage or `<appSettings>` section was found
anywhere in this library (`Web.config` and `app.config` contain only `<configSections>`/
`<system.data>` entries for the Oracle Managed Data Access provider — see Custom configuration
sections below).

## Database connection configuration

| Connection name | Provider | Retrieval method | Purpose | Source |
| --- | --- | --- | --- | --- |
| Secondary SQL Server BDS connection (`clsPolicySecurity`'s `DPISql`/`m_dpiSQL`) | SQL Server† | `AppGlobal.EnvironmentService.GetConfigSetting` (`BDS_USER`, `bdsDatabase`, `BDS_DATABASENAME`) | Builds a second, SQL-Server-backed `IDataPortalInfo` used exclusively by `clsPolicySecurity` for group-membership ([SQL-VP-033](sql/SQL-033-isingroup.md)), loss-control book ([SQL-VP-035](sql/SQL-035-getpolicylistforsafetyconsultant.md)), and group-policy-list ([SQL-VP-034](sql/SQL-034-getpolicylistforgroup.md)) stored-procedure calls — authorization/access-control lookups that live in the SQL Server BDS database rather than the Oracle policy database. | `SAIF.Business.View.Policy\clsPolicySecurity.vb` |
| Primary DPI (`DPI` property, `m_dpi`) | Not determined by this library — injected via constructor** | N/A — no `GetConfigSetting` call in this library resolves it | Used for all other data access in `clsPolicySecurity` (e.g., `IsPolicyValidForUser`, `CanAuditorAccessPolicy`) and passed in by the caller as `inDPI`. Oracle-only stored procedures/bind-variable syntax elsewhere in this library are consistent with this primary DPI being Oracle-backed*, but this is not confirmed from within this library. | `SAIF.Business.View.Policy\clsPolicySecurity.vb` |

† Classification basis: `New clsSQLDataLayer(bdsUser, bdsServer, bdsDatabaseName, ...)` is the
SQL-Server-specific data-layer constructor signature. The target BDS database/catalog value itself
is not statically resolvable from this library's source — it is resolved at runtime against the
Environment API, keyed by the hosting application's `ApplicationName`/`ApplicationHost`.**

`clsSQLDataLayer` itself is not defined in `SAIF.Business.View.Policy` or its same-repo project
references (`SAIF.Business.Policy`, `SAIF.Business.Utilities`) — it is supplied by a referenced SAIF
internal NuGet package, so its exact implementation and any configuration it consumes internally
beyond the three passed-in parameters could not be verified from this library's source.**

## Secure settings

Not applicable. No `GetSecureConfigSetting(...)` calls or hash/credential-utility usage were found
anywhere in this library. All three settings consumed by `clsPolicySecurity.Initialize()` are
retrieved via the plain-text `GetConfigSetting` overload.

## Custom configuration sections

| Section name | Handler type | Purpose |
| --- | --- | --- |
| `oracle.manageddataaccess.client` | `OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess` | Oracle Managed Data Access (ODP.NET) driver configuration; registered identically in both `Web.config` and `app.config`, alongside a `<system.data><DbProviderFactories>` entry re-registering the `Oracle.ManagedDataAccess.Client` provider factory. Not connected to the `BDS_USER`/`bdsDatabase`/`BDS_DATABASENAME` settings — this section configures the Oracle provider used by the library's primary (Oracle) data access, not the secondary SQL Server DPI built in `clsPolicySecurity.Initialize()`.* |

No `<connectionStrings>` entries, WCF `system.serviceModel` sections, or other custom `<section>`
registrations were found in either config file.

## Configuration dependencies

| Dependency | Type | Required at | Impact if missing |
| --- | --- | --- | --- |
| `BDS_USER`, `bdsDatabase`, `BDS_DATABASENAME` (Environment API) | Runtime configuration keys | `clsPolicySecurity` construction (every instance) | `clsPolicySecurity.Initialize()` would fail to build the secondary SQL Server BDS connection, breaking Group, LossControl-book, and group-policy-list authorization/list-building operations. |
| Opaque primary DPI (constructor-injected) | Externally-constructed dependency | Every `clsPolicySecurity` operation except the BDS-only ones | Not resolvable within this library; failure behavior depends on the caller-supplied `IDataPortalInfo` implementation.** |
| `oracle.manageddataaccess.client` config section | Config file section | Application startup (ODP.NET provider registration) | Oracle-backed data access throughout this library (and its Oracle-only stored-procedure calls) would fail to initialize.* |

## Related documentation
- [Library index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Security and authorization](security-authorization.md)

> **Note:** Statements marked with `†` are derived from dependency library
> documentation via the Legends CLI. Statements marked with `*` were inferred
> from code structure or contextual evidence. Statements marked with `**` could
> not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Business.View.Policy\clsPolicySecurity.vb`
- `SAIF.Business.View.Policy\Web.config`
- `SAIF.Business.View.Policy\app.config`
- `SAIF.Business.View.Policy\SAIF.Business.View.Policy.vbproj`
